WRAP_CLASS("itk::PasteImageFilter")

  WRAP_IMAGE_FILTER_USIGN_INT(1)
  WRAP_IMAGE_FILTER_SIGN_INT(1)
  WRAP_IMAGE_FILTER_REAL(1)

  BEGIN_MANAGED_PROPERTY("DestinationIndex" GETSET)
    SET(MANAGED_PROPERTY_SUMMARY   "Get/set the destination index (the location in the first input in which the second input will be pasted).")
    SET(MANAGED_PROPERTY_TYPE      "itkIndex^")
    SET(MANAGED_PROPERTY_GET_BODY  "return itk::ManagedTypes::ToManagedIndex<NativeType::InputImageDimension>( m_PointerToNative->GetDestinationIndex() );")
    SET(MANAGED_PROPERTY_SET_BODY  "m_PointerToNative->SetDestinationIndex( itk::ManagedTypes::ToNativeIndex<NativeType::InputImageDimension>(value) );")
  END_MANAGED_PROPERTY()
  
  BEGIN_MANAGED_PROPERTY("SourceRegion" GETSET)
    SET(MANAGED_PROPERTY_SUMMARY   "Get/set the source region (what part of the second input will be pasted).")
    SET(MANAGED_PROPERTY_TYPE      "itkImageRegion^")
    SET(MANAGED_PROPERTY_GET_BODY  "return itk::ManagedTypes::ToManagedImageRegion<NativeType::OutputImageDimension>( m_PointerToNative->GetSourceRegion() );")
    SET(MANAGED_PROPERTY_SET_BODY  "m_PointerToNative->SetSourceRegion( itk::ManagedTypes::ToNativeImageRegion<NativeType::OutputImageDimension>(value) );")
  END_MANAGED_PROPERTY()
  
    BEGIN_MANAGED_METHOD("SetDestinationImage")
    SET(MANAGED_METHOD_SUMMARY         "Set the destination image.")
    SET(MANAGED_METHOD_RETURN_TYPE     "void")
    SET(MANAGED_METHOD_PARAMS          "itkDataObject^ input")
    SET(MANAGED_METHOD_TYPE_BODY       "\n\t\tINativePointer^ inputPtr = safe_cast<INativePointer^>(input);\n\t\tthis->m_PointerToNative->SetDestinationImage(reinterpret_cast<NativeType::InputImageType*>(inputPtr->NativePointer.ToPointer()));")
    SET(MANAGED_METHOD_WRAPPER_BODY    "iInstance->SetDestinationImage(input);")
  END_MANAGED_METHOD()

  BEGIN_MANAGED_METHOD("SetSourceImage")
    SET(MANAGED_METHOD_SUMMARY         "Set the source image.")
    SET(MANAGED_METHOD_RETURN_TYPE     "void")
    SET(MANAGED_METHOD_PARAMS          "itkDataObject^ input")
    SET(MANAGED_METHOD_TYPE_BODY       "\n\t\tINativePointer^ inputPtr = safe_cast<INativePointer^>(input);\n\t\tthis->m_PointerToNative->SetSourceImage(reinterpret_cast<NativeType::InputImageType*>(inputPtr->NativePointer.ToPointer()));")
    SET(MANAGED_METHOD_WRAPPER_BODY    "iInstance->SetSourceImage(input);")
  END_MANAGED_METHOD()
  
  BEGIN_MANAGED_METHOD("SetDestinationImage")
    SET(MANAGED_METHOD_SUMMARY         "Set the destination image.")
    SET(MANAGED_METHOD_RETURN_TYPE     "void")
    SET(MANAGED_METHOD_PARAMS          "IntPtr inputPtr")
    SET(MANAGED_METHOD_TYPE_BODY       "this->m_PointerToNative->SetDestinationImage((NativeType::InputImageType*)inputPtr.ToPointer());")
    SET(MANAGED_METHOD_WRAPPER_BODY    "iInstance->SetDestinationImage(inputPtr);")
  END_MANAGED_METHOD()

  BEGIN_MANAGED_METHOD("SetSourceImage")
    SET(MANAGED_METHOD_SUMMARY         "Set the source image.")
    SET(MANAGED_METHOD_RETURN_TYPE     "void")
    SET(MANAGED_METHOD_PARAMS          "IntPtr inputPtr")
    SET(MANAGED_METHOD_TYPE_BODY       "this->m_PointerToNative->SetSourceImage((NativeType::InputImageType*)inputPtr.ToPointer());")
    SET(MANAGED_METHOD_WRAPPER_BODY    "iInstance->SetSourceImage(inputPtr);")
  END_MANAGED_METHOD()

END_WRAP_CLASS()
